
#函数 def
def sha():
    print('举头望明月，低头打python!')
sha()

#声明函数
def a():
    a = 3
    b = 5
    s = a+b
    print(s)
    return a
# #调运
c = a()
print(c)


#形参和实参

def xi(a,b):
    print(a+b)

xi(5,6)


a=1
b=2
xi(a,b)


xi(2*5,5*6)

c=5
ad=(8,c+5)


# 位置参数显示
def ads(a,d,f):
    print('张三分数：',a)
    print('李四分数：',d)
    print('王五分数：',f)
ads(456,542,666)





# 带默认值参数
def reg(name,age,sex="女"):
    print('名字:{}年龄{}性别{}'.format(name,age,sex))

reg('张三',20)
reg('李四',21,'男')


# 可变参数
def fav(*fru):
    print("我喜欢的水果：")
    for a in fru:
        print(a)

fav('苹果')
fav('苹果','香蕉','西瓜')
fav('菠萝','香蕉','橘子','哈密瓜','草莓','葡萄')

# 参数的值大于等于二，如果声明函数的时候有其他形参，通长会吧可变长参数放在后面
def show(a,b,*l):
    print(a)
    print(b)
    print(l)


show(1,2,3,5,7,9,100)



# 练习1
def o():
    x=int(input('请输入长度：'))
    y=int(input('请输入宽度:'))
    s=x * y
    p=2*(x+y)
    print('面积：', s)
    print('周长：',p)
o()

# 返回值 （函数：return)
def x(a,b):
    c=a+b
    return c,a,b,a*b,a-b

d=x(1,2)
print(d)

# 变量的作用域
# 全局变量（格式不用缩进）
def x():
    a=10
    return a

a= 100
print(a)
print(x())
#局部变量（格式在函数内）
def a(*x):
    for i in x:
        if i % 2 == 0:
            print("该输入除2等于零")
        if i>10:
            print('输入大于10')
a(1,2,3,11,22,55)

# 利用递归计算1~100相加之和
def sum(n):
    if n==1:
        return 1
    else:
        return  n +sum(n-1)
print('1~100相加的和为',sum(100))

# 计算斐波那契数列 F(0)=0,F(1)=1,F(n)=F(N-1)+F(n-2)
def fid(n):
    if n<=2:
        return 1
    else:
        return fid(n-1)+fid(n-2)

print('斐波那契数列的第{}项为{}'.format(7,fid(7)))

# 匿名函数
#<匿名函数>=lambda<函数列表>：<表达式>
sum=lambda a,b,c,:a+b+c
print(sum(1,2,3))

# 编写lambda函数，参数为正方形的边长为M,输出正方形的面积。
fun =lambda m:m**2
print(fun(5))